Tengo una tupla como la que se muestra a continuación.
vilist = (1,2,3,4)Estoy tratando de usarlos en la consulta Psycopg2 como se muestra a continuación
sql = "select * from temp.table1 where ids in {}" cur.execute(sql,vilist)Que debería analizar una cadena SQL como
SELECT * FROM temp.table1 WHERE ids IDS (1,2,3,4);Sin embargo, aparece un error como el que se muestra a continuación.
SyntaxError Traceback (most recent call last) <ipython-input-91-64f840fa2abe> in <module> 1 sql = "select * from temp.table1 where ids in {}" ----> 2 cur.execute(sql,vilist) SyntaxError: syntax error at or near "{" LINE 1: ...rom temp.table1 where ids in {}Me pueden ayudar a resolver este error por favor.
Utilice la composición de cadenas SQL para pasar identificadores o literales a un texto de consulta.
import psycopg2 import psycopg2.sql as sql # ... vilist = (1,2,3,4) query = sql.SQL("select * from temp.table1 where ids in {}").format(sql.Literal(vilist)) cur.execute(query)